import junit.framework.TestCase;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

/**
 * @author tyy
 * @createTime 2022/6/17 11:20
 * @description
 */
public class TyyTest extends TestCase {
    public void test2() throws IOException {
        String str = "5pWw5Lyg6YCS57uZ6K+l57G755qE5pa55rOV5bCG5a+86Ie05oqb5Ye6TnVMTFBvaW50ZXJFeGNl";
//        str = "TnVMTFBvaW50ZXJFeGNl";
        System.out.println("true = " + str.length());
    }
    public void test1() throws IOException {
        sun.misc.BASE64Encoder encoder = new BASE64Encoder();
        String target = "该类只包含用于获取Base64编码方案的编码器和解码器的静态方法。这个类的实现支持RFC 4648和RFC 2045中指定的Base64类型。基本使用RFC 4648和RFC 2045表1中规定的“The Base64 Alphabet”进行编码和解码操作。编码器不添加任何换行(行分隔符)字符。解码器拒绝包含base64字母表之外的字符的数据． URL和文件名安全使用RFC 4648表2中指定的“URL和文件名安全的Base64字母表”进行编码和解码。编码器不添加任何换行(行分隔符)字符。解码器拒绝包含base64字母表之外的字符的数据。MIME使用RFC 2045表1中规定的“the Base64 Alphabet”进行编码和解码操作。编码后的输出必须以不超过76个字符的行表示，并使用回车符’\\r’紧跟着换行符’\\n’作为行分隔符。编码输出的末尾不会添加行分隔符。在解码操作中，将忽略所有在base64字母表表中没有找到的行分隔符或其他字符。除非另有说明，否则将null参数传递给该类的方法将导致抛出NuLLPointerException。自:1.8作者:Xueming Shen无敌";
        target = "sky";
        String encode = encoder.encode(target.getBytes("UTF-8"));
        System.out.println("编码："+encode);//编码：5rWL6K+VdGVzdA==

        sun.misc.BASE64Decoder decoder = new BASE64Decoder();
        byte[] bytes = decoder.decodeBuffer(encode);
        String decode = new String(bytes, "UTF-8");
        System.out.println("解码："+decode);//解码：测试test

        String decode1 = new String(new Base64().decode(encode), "UTF-8");
        System.out.println("解码jar："+decode1);//解码：测试test 可以解码jdk1.7和1.8编码的字符串


        String encode1 = Base64.encodeBase64String(target.getBytes("UTF-8"));
        System.out.println("编码1："+encode1);//编码：5rWL6K+VdGVzdA==

        String decode0 = new String(decoder.decodeBuffer(encode1), "UTF-8");
        System.out.println("解码1："+decode0);//解码：测试test 可以解码jdk1.7和1.8编码的字符串

        System.out.println("true = " + true);

       decode1 = new String(new Base64().decode(encode1), "UTF-8");
        System.out.println("解码jar1："+decode1);//解码：测试test 可以解码jdk1.7和1.8编码的字符串
    }


}
